CvOC@\ڍ


CvOCƂ

RpNgvOC̗ "CvOC" ƌď̂܂(ΉƂď]vOC "PEvOC" ƌĂԂƂƂ܂)

CȂǂɂlCeBux[X̃vOC@\ł͂܂B

PEvOCł̓x[XƂĂ .NETt[[N̎dlɂvOCDLL̃A[hł܂łB
΂ CvOCł̓A[h\ɂȂ悤PsĂ܂B

vOC@\̑ʂ PEvOCɏȂAPMXҏWp̍Œ̋@\݂̂LĂ܂B
PMXf[^̕ҏW PEvOCŗpĂ IPXPmx C^[tFCX̂܂ܗp邱Ƃł܂(ꕔ)

쐬vOC PMXGfB^ɂ PEvOCƋʂ̕@Őݒuyїp\łB


쐬ɕKvȂ

PEvOCƓl .NETt[[N(4.0)̃NXCu쐬łB

fobOp̃vZXA^b`@\LɊpł̂ŁA
VisualStudio Express(Edition) ̏ꍇ VS2013ȍ~łB


PEvOCƂ̔r

@\ : 
 ɏȂ(PMX̎擾^XVAIvf̎擾̂)

PMX̎擾^XV : 
 ʍXV͕s(ꊇčsƂłȂ)
 擾^XV͓ňUSϊKvɂȂ̂ PEvOCׂ傫 pɂɍXVKvȋ@\͕s

XV :
 PEvOCł PMXf[^^tH[^PmxView ̍XVꂼĂяoKvA
 CvOC PMXXVɓɑSčXV(Lׂ̏㏸ƍ킹ĒӂKv)

vOCDLL̍XV :
 PEvOC͖ċNKv
 CvOC̓GfB^sɂ̂܂܍XV\(OvOCŝ)

fobO쐬 :
 vZXA^b`ɂ PEvOCł\ DLLA[hłȂ(ċNKvƂ)
 CvOCł͔Ɍ悭^p\

Boots :
 CvOCł͋Ns͕s

j[o^ :
 PEvOCɂo^tO CvOCɂ͔
 j[eLXgyуvOCɂꍇ͓o^Ȃ(񐄏)


ӓ_

o^q
CvOC̗pɂ͌߂ꂽo^q̋LqKvɂȂ܂B
PXCPlugin.RegisterNX(RegisterBaseh) ɋLq܂(ڍׂ̓TvvmF)

PMXt@C̎舵
PEvOCƈقȂOPMXf[^(t@C)̓ǂݍ݁A݂ɑ΂ăGfB^{̂̏܂B
KȂǍוł͈قȂ錋ʂƂȂꍇ̂łӂB

CvOCłPMDt@Cyver1PMXt@C̎舵͂ł܂B

PMXC^[tFCX
PMXҏWp PMXC^[tFCX PEvOCƋʂ IPXPmx gƂł܂A
IPXPmx PrimitivevpeB(v~eBu쐬p)͗pł܂B

v~eBu쐬
CvOCł̃v~eBu쐬͊O PXCPrimitiveBuilder Kv܂B

r_
PEvOCł̔ėp̃r_(PEStaticBuilder)ĂяoƂ͂ł܂Aɋ@\܂B
CvOCł p PXCBuilder gKv܂B

r_^v~eBu쐬̏
v~eBu쐬yуr_ɂẮAPXCBridge ƂÓINX炻ꂼꗘpł܂A
pOɃRlN^Ă̏KvƂȂ܂(x΃vOCI܂ŗp\)

vOCNXėp PXCPluginClass hč쐬ꍇ́Abase.Run() ŏL̏s܂B

ƎNX̍쐬
vOCNX PXCPluginClassp IPXCPluginh̓ƎNX𗘗pꍇ̓r_^v~eBȕKvB
܂̏ꍇ MarshalByRefObject pKv܂B

DLL̋p
CvOCpDLL PEvOCpDLL͋p邱Ƃ͂ł܂Bč쐬ĂB
PEvOCƈʃvOCł CvOC܂B

̑
PMXC^[tFCX̎gvOCDLL̃vpeBɊւĂ̒ӓ_Ȃǂ PEvOC̐mFĂB



fobOp

PMXGfB^́uOvOCs@\v({̃j[ [ҏW]-[vOCDLL̒ڎs])
ɍ쐬vOCDLLt@ChbvB

̑ΏۃvOCɐɕ\ĂΎs\B

̂Ƃ VSPMXGfB^ɃvZXA^b`邱ƂŁA
VSŃXebvsȂǂ̃fobO@\gƂł悤ɂȂ܂(vu[N|Cgݒ)

RłADLL̓fobO[hō쐬ĂB

ȏ̃fobOƂ PEvOCłꉞ\łA
PEvOC̏ꍇ PMXGfB^I܂ DLLt@C̍XVłȂȂ܂B

CvOC̏ꍇ DLLpXE̔j{^LɂȂ̂ŁA
Uj邱Ƃ PMXGfB^ғł DLL̍XVsƂł܂B

j[hJԂƂŊȒPɍĎsł̂ŁAvOC悭쐬yуfobO邱Ƃ\łB

󋵂ɂĂ͔jĂDLLt@CbNꂽ܂܂ɂȂ邱Ƃ邩܂(s)A
̏ꍇ PMXGfB^ċNĂ݂ĂB






TvR[h

EPMX̎擾^XVs{\
========================================================================

using PXCPlugin;
using PEPlugin.Pmx;

// o^q | namespaceyуNX̓TvƓɂĂ
namespace PXCPlugin
{
    public class Register : RegisterBase
    {
        public override string[] ClassNames
        {
            get
            {
                // ΏۃvOC namespace tl[ŋLq(w\)
                return new string[]{
                    "CPluginTest.CPluginClass"      
                };
            }
        }
    }
}

// vOC | o^qƈقȂ薼͎̂Rɐݒ\ł
namespace CPluginTest
{
    public class CPluginClass : PXCPluginClass
    {
        public override string Name
        {
            get { return "CPluginClass"; }
        }

        public override string Version
        {
            get { return "0.0"; }
        }

        public override string Description
        {
            get { return ""; }
        }

        public override string MenuText
        {
            get { return "CPluginClass"; }
        }

        public override void Run(IPXCPluginRunArgs args)
        {
            base.Run(args);
            try {
                // PMX擾
                IPXPmx pmx = PXCBridge.GetCurrentPmx(args.Connector);

                // f[^XV


                // PMXXV
                PXCBridge.UpdatePmx(args.Connector, pmx);
            }
            catch (Exception ex) {
                // O
            }
        }
    }
}

========================================================================


EtH[([hX_CAO)𗘗p{\
========================================================================

using System;
using PXCPlugin;

// o^q | namespaceyуNX̓TvƓɂĂ
namespace PXCPlugin
{
    public class Register : RegisterBase
    {
        public override string[] ClassNames
        {
            get
            {
                // ΏۃvOC namespace tl[ŋLq(w\)
                return new string[]{
                    "FormTest.CPluginFormClass"      
                };
            }
        }
    }
}

// vOC
namespace FormTest
{
    public class CPluginFormClass : PXCPluginClass
    {
        // ̃tH[NX
        private Form1 m_form = null;

        public override string MenuText
        {
            get
            {
                return "FormTest";
            }
        }

        public override void Run(IPXCPluginRunArgs args)
        {
            base.Run(args);
            try {
                if (m_form == null) {
                    m_form = new Form1(args);
                    m_form.Visible = true;
                }
                else {
                    m_form.Visible = true;
                }
            }
            catch (Exception ex) {
            }
        }

        public override void Dispose()
        {
            base.Dispose();
            if (m_form != null) {
                m_form.Close();
            }
        }

    }
}

-----

// tH[̏(ꕔ̂)
namespace FormTest
{
    public partial class Form1 : Form
    {
        private IPXCPluginRunArgs m_args = null;

        public Form1(IPXCPluginRunArgs args)
        {
            InitializeComponent();
            m_args = args;
        }

        // N[Y\֕ύX
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing) {
                e.Cancel = true;
                this.Visible = false;
            }
        }
...

    }
}

========================================================================


Er_gIuWFNgǉ(Run̂)
========================================================================

        public override void Run(IPXCPluginRunArgs args)
        {
            base.Run(args);
            try {
                // PMX擾
                IPXPmx pmx = PXCBridge.GetCurrentPmx(args.Connector);

                // {[ǉ
                var bone = m_bld.Bone();    // r_ϐ쐬
                bone.Name = "ǉ{[";
                bone.IsTranslation = true;
                pmx.Bone.Add(bone);

                // v~eBu()ǉ(ގȂƕsI)
                PXCBridge.PrimitiveBuilder.AddBox(pmx, 0, new V3(), 4, 4, 4, pmx.Bone[0]);


                // PMXXV
                PXCBridge.UpdatePmx(args.Connector, pmx);
            }
            catch (Exception ex) {
                // O
            }
        }

========================================================================








